<html>
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<head>
<title>Section 2.6.&nbsp; Options</title>
<link rel="STYLESHEET" type="text/css" href="images/style.css">
<link rel="STYLESHEET" type="text/css" href="images/docsafari.css">
</head>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td><div STYLE="MARGIN-LEFT: 0.15in;"><a href="toc.html"><img src="images/team.gif" width="60" height="17" border="0" align="absmiddle"  alt="Team BBL"></a></div></td>
<td align="right"><div STYLE="MARGIN-LEFT: 0.15in;">
<a href=ch02lev1sec5.html><img src="images/prev.gif" width="60" height="17" border="0" align="absmiddle" alt="Previous Page"></a>
<a href=ch02lev1sec7.html><img src="images/next.gif" width="60" height="17" border="0" align="absmiddle" alt="Next Page"></a>
</div></td></tr></table>
<br><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td valign="top"><a name="ch02lev1sec6"></a>
<h3 class="docSection1Title">2.6. Options</h3>
<p class="docText">We saw the list of POSIX.1 options in <a class="docLink" href="ch02lev1sec2.html#ch02fig05">Figure 2.5</a> and discussed XSI option groups in <a class="docLink" href="ch02lev1sec2.html#ch02lev2sec3">Section 2.2.3</a>. If we are to write portable applications that depend on any of these optionally-supported features, we need a portable way to determine whether an implementation supports a given option.</P>
<p class="docText">Just as with limits (<a class="docLink" href="ch02lev1sec5.html#ch02lev1sec5">Section 2.5</a>), the Single UNIX Specification defines three ways to do this.</P>
<div style="font-weight:bold"><ol class="docList" type="1"><li><div style="font-weight:normal"><p class="docList">Compile-time options are defined in <tt>&lt;unistd.h&gt;</tt>.</P></div></LI><LI><div style="font-weight:normal"><p class="docList">Runtime options that are not associated with a file or a directory are identified with the <tt>sysconf</tt> function.</p></div></LI><LI><div style="font-weight:normal"><p class="docList">Runtime options that are associated with a file or a directory are discovered by calling either the <tt>pathconf</tt> or the <tt>fpathconf</tt> function.</P></div></li></ol></div>
<p class="docText">The options include the symbols listed in the third column of <a class="docLink" href="ch02lev1sec2.html#ch02fig05">Figure 2.5</a>, as well as the symbols listed in <a class="docLink" href="#ch02fig17">Figures 2.17</a> and <a class="docLink" href="#ch02fig18">2.18</a>. If the symbolic constant is not defined, we must use <tt>sysconf</tt>, <tt>pathconf</tt>, or <tt>fpathconf</tt> to determine whether the option is supported. In this case, the <span class="docEmphasis">name</span> argument to the function is formed by replacing the <tt>_POSIX</tt> at the beginning of the symbol with <tt>_SC</tt> or <tt>_PC</tt>. For constants that begin with <tt>_XOPEN</tt>, the <span class="docEmphasis">name</span> argument is formed by prepending the string with <tt>_SC</tt> or <tt>_PC</tt>. For example, if the constant <tt>_POSIX_THREADS</tt> is undefined, we can call <tt>sysconf</tt> with the <span class="docEmphasis">name</span> argument set to <tt>_SC_THREADS</tt> to determine whether the platform supports the POSIX threads option. If the constant <tt>_XOPEN_UNIX</tt> is undefined, we can call <tt>sysconf</tt> with the <span class="docEmphasis">name</span> argument set to <tt>_SC_XOPEN_UNIX</tt> to determine whether the platform supports the XSI extensions.</P>
<a name="ch02fig17"></a><p><table cellspacing="0" class="allBorders" border="1" RULES="groups" cellpadding="5"><caption><H5 class="docTableTitle">Figure 2.17. Options and <span class="docEmphasis">name</span> arguments to <tt>sysconf</tt></H5></caption><colgroup><col width="150"><col width="200"><col width="150"></colgroup><thead><TR><th class="rightBorder bottomBorder thead" scope="col" align="center" valign="bottom"><p class="docText"><span class="docEmphRoman">Name of option</span></p></th><th class="rightBorder bottomBorder thead" scope="col" align="center" valign="bottom"><p class="docText"><span class="docEmphRoman">Description</span></P></th><th class="bottomBorder thead" scope="col" align="center" valign="bottom"><p class="docText"><span class="docEmphRoman"><span class="docEmphasis">name</span> argument</span></P></th></tr></thead><TR><TD class="rightBorder" align="left" valign="top"><p class="docText"><tt>_POSIX_JOB_CONTROL</tt></p></td><td class="rightBorder" align="left" valign="top"><p class="docText">indicates whether the implementation supports job control</p></TD><td class="docTableCell" align="left" valign="top"><p class="docText"><tt>_SC_JOB_CONTROL</tt>
</P></td></TR><tr><td class="rightBorder" align="left" valign="top"><p class="docText"><tt>_POSIX_READER_WRITER_LOCKS</tt></p></td><td class="rightBorder" align="left" valign="top"><p class="docText">indicates whether the implementation supports readerwriter locks</p></td><td class="docTableCell" align="left" valign="top"><p class="docText"><tt>_SC_READER_WRITER_LOCKS</tt>
</p></td></tr><tr><td class="rightBorder" align="left" valign="top"><p class="docText"><tt>_POSIX_SAVED_IDS</tt></p></td><td class="rightBorder" align="left" valign="top"><p class="docText">indicates whether the implementation supports the saved set-user-ID and the saved set-group-ID</p></TD><TD class="docTableCell" align="left" valign="top"><p class="docText"><tt>_SC_SAVED_IDS</tt>
</p></TD></TR><TR><td class="rightBorder" align="left" valign="top"><p class="docText"><tt>_POSIX_SHELL</tt></P></TD><TD class="rightBorder" align="left" valign="top"><p class="docText">indicates whether the implementation supports the POSIX shell</p></TD><td class="docTableCell" align="left" valign="top"><p class="docText"><tt>_SC_SHELL</tt>
</P></TD></TR><tr><TD class="rightBorder" align="left" valign="top"><p class="docText"><tt>_POSIX_VERSION</tt></P></td><TD class="rightBorder" align="left" valign="top"><p class="docText">indicates the POSIX.1 version</P></td><td class="docTableCell" align="left" valign="top"><p class="docText"><tt>_SC_VERSION</tt>
</p></td></TR><tr><TD class="rightBorder" align="left" valign="top"><p class="docText"><tt>_XOPEN_CRYPT</tt></p></TD><td class="rightBorder" align="left" valign="top"><p class="docText">indicates whether the implementation supports the XSI encryption option group</p></td><td class="docTableCell" align="left" valign="top"><p class="docText"><tt>_SC_XOPEN_CRYPT</tt>
</p></td></tr><tr><td class="rightBorder" align="left" valign="top"><p class="docText"><tt>_XOPEN_LEGACY</tt></p></td><td class="rightBorder" align="left" valign="top"><p class="docText">indicates whether the implementation supports the XSI legacy option group</p></td><td class="docTableCell" align="left" valign="top"><p class="docText"><tt>_SC_XOPEN_LEGACY</tt>
</p></td></TR><TR><td class="rightBorder" align="left" valign="top"><p class="docText"><tt>_XOPEN_REALTIME</tt></P></TD><TD class="rightBorder" align="left" valign="top"><p class="docText">indicates whether the implementation supports the XSI real-time option group</p></TD><TD class="docTableCell" align="left" valign="top"><p class="docText"><tt>_SC_XOPEN_REALTIME</tt>
</P></td></TR><tr><TD class="rightBorder" align="left" valign="top"><p class="docText"><tt>_XOPEN_REALTIME_THREADS</tt></P></TD><td class="rightBorder" align="left" valign="top"><p class="docText">indicates whether the implementation supports the XSI real-time threads option group</P></TD><td class="docTableCell" align="left" valign="top"><p class="docText"><tt>_SC_XOPEN_REALTIME_THREADS</tt>
</P></TD></tr><tr><td class="rightBorder" align="left" valign="top"><p class="docText"><tt>_XOPEN_VERSION</tt></p></TD><td class="rightBorder" align="left" valign="top"><p class="docText">indicates the XSI version</P></td><TD class="docTableCell" align="left" valign="top"><p class="docText"><tt>_SC_XOPEN_VERSION</tt>
</p></td></tr></table></p><br>
<a name="ch02fig18"></a><p><table cellspacing="0" class="allBorders" border="1" RULES="groups" cellpadding="5"><caption><h5 class="docTableTitle">Figure 2.18. Options and <span class="docEmphasis">name</span> arguments to <tt>pathconf</tt> and <tt>fpathconf</tt></h5></caption><colgroup><col width="150"><col width="200"><col width="150"></colgroup><thead><tr><th class="rightBorder bottomBorder thead" scope="col" align="center" valign="bottom"><p class="docText"><span class="docEmphRoman">Name of option</span></p></th><th class="rightBorder bottomBorder thead" scope="col" align="center" valign="bottom"><p class="docText"><span class="docEmphRoman">Description</span></p></th><th class="bottomBorder thead" scope="col" align="center" valign="bottom"><p class="docText"><span class="docEmphRoman"><span class="docEmphasis">name</span> argument</span></p></th></tr></thead><tr><td class="rightBorder" align="left" valign="top"><p class="docText"><tt>_POSIX_CHOWN_RESTRICTED</tt></p></td><TD class="rightBorder" align="left" valign="top"><p class="docText">indicates whether use of <tt>chown</tt> is restricted</P></td><TD class="docTableCell" align="left" valign="top"><p class="docText"><tt>_PC_CHOWN_RESTRICTED</tt>
</P></TD></tr><TR><TD class="rightBorder" align="left" valign="top"><p class="docText"><tt>_POSIX_NO_TRUNC</tt></P></td><TD class="rightBorder" align="left" valign="top"><p class="docText">indicates whether pathnames longer than <tt>NAME_MAX</tt> generate an error</p></TD><TD class="docTableCell" align="left" valign="top"><p class="docText"><tt>_PC_NO_TRUNC</tt>
</P></td></TR><TR><td class="rightBorder" align="left" valign="top"><p class="docText"><tt>_POSIX_VDISABLE</tt></P></TD><td class="rightBorder" align="left" valign="top"><p class="docText">if defined, terminal special characters can be disabled with this value</p></td><td class="docTableCell" align="left" valign="top"><p class="docText"><tt>_PC_VDISABLE</tt>
</P></td></TR><tr><TD class="rightBorder" align="left" valign="top"><p class="docText"><tt>_POSIX_ASYNC_IO</tt></p></td><td class="rightBorder" align="left" valign="top"><p class="docText">indicates whether asynchronous I/O can be used with the associated file</p></td><td class="docTableCell" align="left" valign="top"><p class="docText"><tt>_PC_ASYNC_IO</tt>
</p></td></tr><tr><td class="rightBorder" align="left" valign="top"><p class="docText"><tt>_POSIX_PRIO_IO</tt></p></td><td class="rightBorder" align="left" valign="top"><p class="docText">indicates whether prioritized I/O can be used with the associated file</p></td><td class="docTableCell" align="left" valign="top"><p class="docText"><tt>_PC_PRIO_IO</tt>
</P></TD></tr><TR><TD class="rightBorder" align="left" valign="top"><p class="docText"><tt>_POSIX_SYNC_IO</tt></P></td><TD class="rightBorder" align="left" valign="top"><p class="docText">indicates whether synchronized I/O can be used with the associated file</P></TD><td class="docTableCell" align="left" valign="top"><p class="docText"><tt>_PC_SYNC_IO</tt>
</P></td></TR></table></P><BR>
<p class="docText"><a name="idd1e15979"></a><a name="idd1e15984"></a><a name="idd1e15989"></a><a name="idd1e15994"></a><a name="idd1e15999"></a><a name="idd1e16004"></a><a name="idd1e16009"></a><a name="idd1e16014"></a><a name="idd1e16019"></a><a name="idd1e16024"></a><a name="idd1e16029"></a><a name="idd1e16034"></a><a name="idd1e16039"></a><a name="idd1e16044"></a><a name="idd1e16049"></a><a name="idd1e16054"></a><a name="idd1e16059"></a><a name="idd1e16064"></a><a name="idd1e16069"></a><a name="idd1e16074"></a><a name="idd1e16079"></a><a name="idd1e16084"></a><a name="idd1e16089"></a><a name="idd1e16094"></a>If the symbolic constant is defined by the platform, we have three possibilities.</p>
<div style="font-weight:bold"><ol class="docList" type="1"><LI><div style="font-weight:normal"><p class="docList">If the symbolic constant is defined to have the value 1, then the corresponding option is unsupported by the platform.</P></div></li><LI><div style="font-weight:normal"><p class="docList">If the symbolic constant is defined to be greater than zero, then the corresponding option is supported.</P></div></li><li><div style="font-weight:normal"><p class="docList">If the symbolic constant is defined to be equal to zero, then we must call <tt>sysconf</tt>, <tt>pathconf</tt>, or <tt>fpathconf</tt> to determine whether the option is supported.</p></div></li></ol></div>
<p class="docText"><a class="docLink" href="#ch02fig17">Figure 2.17</a> summarizes the options and their symbolic constants that can be used with <tt>sysconf</tt>, in addition to those listed in <a class="docLink" href="ch02lev1sec2.html#ch02fig05">Figure 2.5</a>.</P>
<p class="docText">The symbolic constants used with <tt>pathconf</tt> and <tt>fpathconf</tt> are summarized in <a class="docLink" href="#ch02fig18">Figure 2.18</a>. As with the system limits, there are several points to note regarding how options are treated by <tt>sysconf</tt>, <tt>pathconf</tt>, and <tt>fpathconf</tt>.</p>
<div style="font-weight:bold"><ol class="docList" type="1"><LI><div style="font-weight:normal"><p class="docList">The value returned for <tt>_SC_VERSION</tt> indicates the four-digit year and two-digit month of the standard. This value can be 198808L, 199009L, 199506L, or some other value for a later version of the standard. The value associated with Version 3 of the Single UNIX Specification is 200112L.</p></div></LI><li><div style="font-weight:normal"><p class="docList"><a name="idd1e16176"></a><a name="idd1e16181"></a><a name="idd1e16186"></a><a name="idd1e16189"></a><a name="idd1e16194"></a><a name="idd1e16199"></a><a name="idd1e16204"></a><a name="idd1e16209"></a><a name="idd1e16214"></a><a name="idd1e16219"></a><a name="idd1e16224"></a><a name="idd1e16229"></a><a name="idd1e16234"></a><a name="idd1e16239"></a><a name="idd1e16244"></a><a name="idd1e16249"></a><a name="idd1e16254"></a>The value returned for <tt>_SC_XOPEN_VERSION</tt> indicates the version of the XSI that the system complies with. The value associated with Version 3 of the Single UNIX Specification is 600.</p></div></li><li><div style="font-weight:normal"><p class="docList">The values <tt>_SC_JOB_CONTROL</tt>, <tt>_SC_SAVED_IDS</tt>, and <tt>_PC_VDISABLE</tt> no longer represent optional features. As of Version 3 of the Single UNIX Specification, these features are now required, although these symbols are retained for backward compatibility.</p></div></li><li><div style="font-weight:normal"><p class="docList"><tt>_PC_CHOWN_RESTRICTED</tt> and <tt>_PC_NO_TRUNC</tt> return 1 without changing <tt>errno</tt> if the feature is not supported for the specified <span class="docEmphasis">pathname</span> or <span class="docEmphasis">filedes</span>.</p></div></li><li><div style="font-weight:normal"><p class="docList">The referenced file for <tt>_PC_CHOWN_RESTRICTED</tt> must be either a file or a directory. If it is a directory, the return value indicates whether this option applies to files within that directory.</p></div></li><li><div style="font-weight:normal"><p class="docList">The referenced file for <tt>_PC_NO_TRUNC</tt> must be a directory. The return value applies to filenames within the directory.</p></div></li><li><div style="font-weight:normal"><p class="docList">The referenced file for <tt>_PC_VDISABLE</tt> must be a terminal file.</p></div></LI></ol></div>
<p class="docText">In <a class="docLink" href="#ch02fig19">Figure 2.19</a> we show several configuration options and their corresponding values on the four sample systems we discuss in this text. Note that several of the systems haven't yet caught up to the latest version of the Single UNIX Specification. For example, Mac OS X 10.3 supports POSIX threads but defines <tt>_POSIX_THREADS</tt> as</P>

<pre>
   #define _POSIX_THREADS
</pre><br>

<p class="docText">without specifying a value. To conform to Version 3 of the Single UNIX Specification, the symbol, if defined, should be set to -1, 0, or 200112.</P>
<a name="ch02fig19"></a><P><table cellspacing="0" class="allBorders" border="1" RULES="groups" cellpadding="5"><caption><H5 class="docTableTitle">Figure 2.19. Examples of configuration options</h5></caption><colgroup><col width="125"><col width="75"><col width="75"><col width="75"><col width="75"><col width="75"></colgroup><thead><TR><th class="rightBorder bottomBorder thead" scope="col" align="center" valign="middle" rowspan="2"><p class="docText"><span class="docEmphRoman">Limit</span></P></th><th class="rightBorder bottomBorder thead" scope="col" align="center" valign="middle" rowspan="2"><p class="docText"><span class="docEmphRoman">FreeBSD 5.2.1</span></P></th><th class="rightBorder bottomBorder thead" scope="col" align="center" valign="middle" rowspan="2"><p class="docText"><span class="docEmphRoman">Linux 2.4.22</span></p></th><th class="rightBorder bottomBorder thead" scope="col" align="center" valign="middle" rowspan="2"><p class="docText"><span class="docEmphRoman">Mac OS X 10.3</span></P></th><th class="bottomBorder thead" scope="col" align="center" valign="bottom" colspan="2"><p class="docText"><span class="docEmphRoman">Solaris 9</span></p></th></TR><TR><th class="rightBorder thead" scope="col" align="center" valign="bottom"><p class="docText"><span class="docEmphRoman">UFS file system</span></P></th><th class="thead" scope="col" align="center" valign="bottom"><p class="docText"><span class="docEmphRoman">PCFS file system</span></p></th></TR></thead><TR><td class="rightBorder" align="left" valign="top"><p class="docText"><tt>_POSIX_CHOWN_RESTRICTED</tt></P></TD><td class="rightBorder" align="right" valign="top"><p class="docText">1</p></td><td class="rightBorder" align="right" valign="top"><p class="docText">1</P></td><TD class="rightBorder" align="right" valign="top"><p class="docText">1</p></TD><td class="rightBorder" align="right" valign="top"><p class="docText">1</p></td><td class="docTableCell" align="right" valign="top"><p class="docText">1</p></td></tr><tr><td class="rightBorder" align="left" valign="top"><p class="docText"><tt>_POSIX_JOB_CONTROL</tt></p></td><td class="rightBorder" align="right" valign="top"><p class="docText">1</p></td><td class="rightBorder" align="right" valign="top"><p class="docText">1</p></td><TD class="rightBorder" align="right" valign="top"><p class="docText">1</P></td><TD class="rightBorder" align="right" valign="top"><p class="docText">1</P></TD><td class="docTableCell" align="right" valign="top"><p class="docText">1</P></TD></TR><tr><TD class="rightBorder" align="left" valign="top"><p class="docText"><tt>_POSIX_NO_TRUNC</tt></p></TD><TD class="rightBorder" align="right" valign="top"><p class="docText">1</P></td><TD class="rightBorder" align="right" valign="top"><p class="docText">1</P></td><TD class="rightBorder" align="right" valign="top"><p class="docText">1</P></td><td class="rightBorder" align="right" valign="top"><p class="docText">1</p></td><TD class="docTableCell" align="right" valign="top"><p class="docText">unsupported</p></TD></tr><TR><td class="rightBorder" align="left" valign="top"><p class="docText"><tt>_POSIX_SAVED_IDS</tt></p></td><td class="rightBorder" align="right" valign="top"><p class="docText">unsupported</p></td><td class="rightBorder" align="right" valign="top"><p class="docText">1</p></td><td class="rightBorder" align="right" valign="top"><p class="docText">unsupported</p></td><td class="rightBorder" align="right" valign="top"><p class="docText">1</p></td><td class="docTableCell" align="right" valign="top"><p class="docText">1</p></TD></TR><tr><TD class="rightBorder" align="left" valign="top"><p class="docText"><tt>_POSIX_THREADS</tt></P></TD><td class="rightBorder" align="right" valign="top"><p class="docText">200112</P></TD><TD class="rightBorder" align="right" valign="top"><p class="docText">200112</p></TD><td class="rightBorder" align="right" valign="top"><p class="docText">defined</P></TD><TD class="rightBorder" align="right" valign="top"><p class="docText">1</p></TD><TD class="docTableCell" align="right" valign="top"><p class="docText">1</p></TD></TR><tr><td class="rightBorder" align="left" valign="top"><p class="docText"><tt>_POSIX_VDISABLE</tt></p></td><TD class="rightBorder" align="right" valign="top"><p class="docText">255</p></TD><td class="rightBorder" align="right" valign="top"><p class="docText">0</P></td><td class="rightBorder" align="right" valign="top"><p class="docText">255</p></td><td class="rightBorder" align="right" valign="top"><p class="docText">0</p></td><td class="docTableCell" align="right" valign="top"><p class="docText">0</p></td></tr><tr><td class="rightBorder" align="left" valign="top"><p class="docText"><tt>_POSIX_VERSION</tt></p></td><td class="rightBorder" align="right" valign="top"><p class="docText">200112</p></TD><TD class="rightBorder" align="right" valign="top"><p class="docText">200112</p></TD><TD class="rightBorder" align="right" valign="top"><p class="docText">198808</P></td><TD class="rightBorder" align="right" valign="top"><p class="docText">199506</P></TD><td class="docTableCell" align="right" valign="top"><p class="docText">199506</P></td></TR><TR><TD class="rightBorder" align="left" valign="top"><p class="docText"><tt>_XOPEN_UNIX</tt></p></TD><TD class="rightBorder" align="right" valign="top"><p class="docText">unsupported</p></TD><TD class="rightBorder" align="right" valign="top"><p class="docText">1</p></td><td class="rightBorder" align="right" valign="top"><p class="docText">undefined</p></TD><td class="rightBorder" align="right" valign="top"><p class="docText">1</P></td><TD class="docTableCell" align="right" valign="top"><p class="docText">1</p></td></tr><tr><td class="rightBorder" align="left" valign="top"><p class="docText"><tt>_XOPEN_VERSION</tt></p></td><td class="rightBorder" align="right" valign="top"><p class="docText">unsupported</p></td><td class="rightBorder" align="right" valign="top"><p class="docText">500</p></td><td class="rightBorder" align="right" valign="top"><p class="docText">undefined</p></td><td class="rightBorder" align="right" valign="top"><p class="docText">3</P></TD><td class="docTableCell" align="right" valign="top"><p class="docText">3</P></TD></TR></table></p><BR>
<p class="docText">An entry is marked as &quot;undefined&quot; if the feature is not defined, i.e., the system doesn't define the symbolic constant or its corresponding <tt>_PC</tt> or <tt>_SC</tt> name. In contrast, the &quot;defined&quot; entry means that the symbolic constant is defined, but no value is specified, as in the preceding <tt>_POSIX_THREADS</tt> example. An entry is &quot;unsupported&quot; if the system defines the symbolic constant, but it has a value of -1, or it has a value of 0 but the corresponding <tt>sysconf</tt> or <tt>pathconf</tt> call returned -1.</P>
<p class="docText"><a name="idd1e16359"></a><a name="idd1e16364"></a><a name="idd1e16367"></a><a name="idd1e16370"></a><a name="idd1e16375"></a><a name="idd1e16380"></a><a name="idd1e16383"></a><a name="idd1e16386"></a><a name="idd1e16389"></a><a name="idd1e16392"></a><a name="idd1e16397"></a><a name="idd1e16402"></a><a name="idd1e16407"></a><a name="idd1e16412"></a><a name="idd1e16417"></a><a name="idd1e16420"></a><a name="idd1e16423"></a><a name="idd1e16428"></a><a name="idd1e16433"></a>Note that <tt>pathconf</tt> returns a value of 1 for <tt>_PC_NO_TRUNC</tt> when used with a file from a PCFS file system on Solaris. The PCFS file system supports the DOS format (for floppy disks), and DOS filenames are silently truncated to the 8.3 format limit that the DOS file system requires.</P>

<a href="17021535.html"><img src="images/pixel.gif" alt="" width="1" height="1" border="0"></a><ul></UL></td></TR></table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td><div STYLE="MARGIN-LEFT: 0.15in;"><a href="toc.html"><img src="images/team.gif" width="60" height="17" border="0" align="absmiddle"  alt="Team BBL"></a></div></td>
<td align="right"><div STYLE="MARGIN-LEFT: 0.15in;">
<a href=ch02lev1sec5.html><img src="images/prev.gif" width="60" height="17" border="0" align="absmiddle" alt="Previous Page"></a>
<a href=ch02lev1sec7.html><img src="images/next.gif" width="60" height="17" border="0" align="absmiddle" alt="Next Page"></a>
</div></td></tr></table>
</body></html><br>
<table width="100%" cellspacing="0" cellpadding="0"
style="margin-top: 0pt; border-collapse: collapse;"> 
<tr> <td align="right" style="background-color=white; border-top: 1px solid gray;"> 
<a href="http://www.zipghost.com/" target="_blank" style="font-family: Tahoma, Verdana;
 font-size: 11px; text-decoration: none;">The CHM file was converted to HTM by Trial version of <b>ChmD<!--87-->ecompiler</b>.</a>
</TD>
</TR><tr>
<td align="right" style="background-color=white; "> 
<a href="http://www.etextwizard.com/download/cd/cdsetup.exe" target="_blank" style="font-family: Tahoma, Verdana;
 font-size: 11px; text-decoration: none;">Download <b>ChmDec<!--87-->ompiler</b> at: http://www.zipghost.com</a>
</TD></tr></table>
